From 421d27c8581ce3a986c13577bbc7bcbc9821cd4f Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Wed, 29 Feb 2012 12:20:25 -0500 Subject: [PATCH] overlay: factor out gtk_overlay_get_main_widget_allocation This will be used later in a subsequent commit. --- gtk/gtkoverlay.c | 61 ++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/gtk/gtkoverlay.c b/gtk/gtkoverlay.c index 66fc9ee90f..331d9ee600 100644 --- a/gtk/gtkoverlay.c +++ b/gtk/gtkoverlay.c @@ -113,6 +113,41 @@ gtk_overlay_create_child_window (GtkOverlay *overlay, return window; } +static void +gtk_overlay_get_main_widget_allocation (GtkOverlay *overlay, + GtkAllocation *main_alloc_out) +{ + GtkWidget *main_widget; + GtkAllocation main_alloc; + + main_widget = gtk_bin_get_child (GTK_BIN (overlay)); + + /* special-case scrolled windows */ + if (GTK_IS_SCROLLED_WINDOW (main_widget)) + { + GtkWidget *grandchild; + gint x, y; + + grandchild = gtk_bin_get_child (GTK_BIN (main_widget)); + res = gtk_widget_translate_coordinates (grandchild, main_widget, 0, 0, &x, &y); + + main_alloc.x = x; + main_alloc.y = y; + main_alloc.width = gtk_widget_get_allocated_width (grandchild); + main_alloc.height = gtk_widget_get_allocated_height (grandchild); + } + else + { + main_alloc.x = 0; + main_alloc.y = 0; + main_alloc.width = gtk_widget_get_allocated_width (main_widget); + main_alloc.height = gtk_widget_get_allocated_height (main_widget); + } + + if (main_alloc_out) + *main_alloc_out = main_alloc; +} + static void gtk_overlay_child_allocate (GtkOverlay *overlay, GtkOverlayChild *child) @@ -247,36 +282,12 @@ gtk_overlay_get_child_position (GtkOverlay *overlay, GtkWidget *widget, GtkAllocation *alloc) { - GtkWidget *main_widget; GtkAllocation main_alloc; GtkRequisition req; GtkAlign halign; GtkTextDirection direction; - main_widget = gtk_bin_get_child (GTK_BIN (overlay)); - - /* special-case scrolled windows */ - if (GTK_IS_SCROLLED_WINDOW (main_widget)) - { - GtkWidget *grandchild; - gint x, y; - - grandchild = gtk_bin_get_child (GTK_BIN (main_widget)); - gtk_widget_translate_coordinates (grandchild, main_widget, 0, 0, &x, &y); - - main_alloc.x = x; - main_alloc.y = y; - main_alloc.width = gtk_widget_get_allocated_width (grandchild); - main_alloc.height = gtk_widget_get_allocated_height (grandchild); - } - else - { - main_alloc.x = 0; - main_alloc.y = 0; - main_alloc.width = gtk_widget_get_allocated_width (main_widget); - main_alloc.height = gtk_widget_get_allocated_height (main_widget); - } - + gtk_overlay_get_main_widget_allocation (overlay, &main_alloc); gtk_widget_get_preferred_size (widget, NULL, &req); alloc->x = main_alloc.x; -- 2.30.2